SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[paDevolverTramite] 

@IdTramite INT,
@Observaciones VARCHAR(255)

AS
SET NOCOUNT ON
DECLARE @Error INT
SET @Error = 0
DECLARE @Tracking INT
DECLARE @Tarea INT
DECLARE @TareaAnterior INT
DECLARE @TrackingAnterior INT

BEGIN TRANSACTION

-- Obtengo el identificador del tracking actual y anterior y de la tarea actual y anterior
SELECT @Tracking = TT.IdTracking, @Tarea = TT.Tarea, @TareaAnterior = T.Anterior , @TrackingAnterior = TT2.IdTracking
	FROM tb_Tracking TT 
	INNER JOIN tb_Tareas T ON T.IdTarea = TT.Tarea 
	INNER JOIN tb_Tracking TT2 ON TT2.Tarea = T.Anterior
	WHERE TT.Tramite = @IdTramite AND TT.Estado = 2 AND TT2.Estado = 7 AND TT2.Tramite = @IdTramite

-- Elimino la tarea actual (no tiene pasos a esta altura)
DELETE tb_Tracking WHERE IdTracking = @Tracking
SELECT @Error = @@ERROR

IF @Error <> 0 GOTO Salir

-- Actualizo la tarea anterior a estado devuelto
UPDATE tb_Tracking SET Estado = 5 WHERE IdTracking = @TrackingAnterior
SELECT @Error = @@ERROR

IF @Error <> 0 GOTO Salir

-- Actualizo el paso anterior con la observaciones realizada
UPDATE tb_TrackingDePasos SET Observacion = @Observaciones WHERE Tracking = @TrackingAnterior
SELECT @Error = @@ERROR

IF @Error <> 0 GOTO Salir

Salir:

IF @Error = 0
	COMMIT TRANSACTION
ELSE
	ROLLBACK TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[paDevolverTramite] TO [GestionDeDocumentos]
GO
